import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class PlataformaDinamica here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class PlataformaDinamica extends PlataformaEstatica
{
    /**
     * Act - do whatever the PlataformaDinamica wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public int aux=1,cont=0;
    
    /**
     * Metodo Act de la Subclase PlataformaDinamica
     */
    public void act() 
    {
        subeJugador(40);
        subeEnemigo(20);
        mueveArriba();
        if(aux%2==0)
           mueveDerecha();
        else
           mueveIzquierda();
        cont++;
        if(cont==150)
        {
            cont=0;
            aux++;
        }
        eliminaPlataforma();
    }
    
    /**
     * Metodo para eliminar la plataforma una 
     * vez que llega a la cima del escenario
     */
    public void eliminaPlataforma()
    {
         if(getY() == 1) { getWorld().removeObject(this); }
    }
    
    /**
     * Metodo para Subir al jugador a la plataforma
     */
    public int subeJugador(int num)
    {
       int res=0;
       Actor j = getOneIntersectingObject(Heroe.class);
       if(j != null)
       {
        jug = (Heroe)j;
        if(jug.getY()+(jug.alto/2)-num < getY()&&jug.encuentra()==1)
        {
           int x=jug.getX();
           getWorld().removeObject(jug);
           getWorld().addObject(jug,x,getY()-(jug.alto/2)-num);
           res=jug.enc=1;
        }
       }
        return res;
    }
    
    /**
     * Metodo para mover la plataforma hacia la izquierda
     */
    public void mueveIzquierda()
    {
        setImage("NubeVoladora.png");
        setLocation(getX()-2, getY());
    }
    
    /**
     * Metodo para mover la plataforma hacia la derecha
     */
    public void mueveDerecha()
    {
        setImage("NubeVoladora2.png");
        setLocation(getX()+2, getY());
    }
    
    /**
     * Metodo para mover la plataforma hacia arriba
     */
    public void mueveArriba()
    {
        setLocation(getX(), getY()-2);
    }
    
    /**
     * Metodo para mover la plataforma hacia abajo
     */
    public void mueveAbajo()
    {
        setLocation(getX(), getY()+2);
    }
}
